/*
 * cdn_power_switch_reset.h
 *
 *  Created on: 2025年4月11日
 *      Author: JunJun
 */

#ifndef CDN_CODE_LIGHT_OUTPUT_CDN_POWER_SWITCH_RESET_H_
#define CDN_CODE_LIGHT_OUTPUT_CDN_POWER_SWITCH_RESET_H_

#include "stdint.h"

#define POWERSWITCHTIME1      50   //上电开始计数的时间（单位：10ms）-------用于开关复位
#define POWERSWITCHTIME2      500   //上电计数清零的时间（单位：10ms）-------用于开关复位
#define POWERSWITCHNUMBER1     7    //执行复位操作的次数区间首（7-12次以内执行复位）--------用于开关复位
#define POWERSWITCHNUMBER2     12    //执行复位操作的次数区间尾（超过12次开关不执行复位）--------用于开关复位
#define POWERSWITCHBREATHPERIOD   200//执行复位操作时呼吸周期（单位：10ms）
#define POWERSWITCHBLINKPERIOD   100//执行复位操作时闪烁周期（单位：10ms）-----闪烁周期请关注复位时间窗口范围

//计数
typedef struct Count
{
  uint8_t ResetCountNum;//上电复位开关计数
}Count;

//开关复位灯效模式
typedef enum
{
  CDN_POWER_SWITCH_NONE,
  CDN_POWER_SWITCH_BLINK, //开关复位，闪烁
  CDN_POWER_SWITCH_BREATH,//开关复位，呼吸
}POWER_SWITCH_MODE;

typedef struct
{
  POWER_SWITCH_MODE mode;
  uint8_t time;
}POWER_SWITCH_CMD;

POWER_SWITCH_MODE Get_CDN_Power_Switch_mode(void);
uint8_t Get_CDN_Power_Switch_time(void);
void SetsecondNum5S(uint8_t flag);
uint8_t GetsecondNum5S(void);
void SetsecondNum500MS(uint8_t flag);
uint8_t GetsecondNum500MS(void);
void PowerSwitchHandle(void);
void Set_CDN_Power_Switch_mode(POWER_SWITCH_MODE mode, uint8_t time);
void CDN_Power_Switch_display(void);
void CDN_Power_Switch_Breath_Handle(void);
void CDN_Power_Switch_Blink_Handle(void);

#endif /* CDN_CODE_LIGHT_OUTPUT_CDN_POWER_SWITCH_RESET_H_ */
